iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 15
0
Software Development

模組化設計系列 第 15

Day15 - 切割模組注意事項

  • 分享至 

  • xImage
  •  

如果模組越來越大的時候,就必須要開始思考怎麼切割模組了,在切模組的過程中,我們將遇到一些挑戰如下:

  • 那原始碼怎麼辦?repo 也要切開來嗎?
  • 版號管理呢?
  • 切開來後的子模組之間的相互依賴關聯又要怎麼處理?
  • 怎麼統一管理子模組?

管理模組化的原始碼

怎麼管理模組化的原始碼,常見的方式有兩種策略 Monorepo 和 Polyrepo。

  • Monorepo:意思是在一個 repo 中,管理多個模組。
  • Polyrepo:意思是在一個 repo 中,管理一個模組。

版號管理

因為切成多個子模組後,每個子模組開始有各自的版號,所以又可分成以下這兩種模式:

固定模式 (fix mode)

固定模式顧名思義就是固定用一個版號,如果 app-api-server 模組有更動需要升版,即使根本沒動到 app-core 模組的程式碼,我們還是會把三個模組都提升到同樣的版號。

{
  "app-api-server": "0.1.0",
  "app-socket-server": "0.1.0",
  "app-core": "0.1.0"
}

獨立模式 (independent mode)

獨立模式則是子模組可以依照實際情況,獨立的升級版號。

{
  "app-api-server": "0.2.5",
  "app-socket-server": "0.1.3",
  "app-core": "0.1.0"
}

子模組之間的相互依賴關聯

切成個別模組之後,它們之間要怎麼讀到最新版的程式碼?難道每次都要發佈到 npm 上嗎?如果我程式還沒有要公開發佈的話怎麼辦?

這時候我們可以用 npm link

統一管理子模組

如果模組一多後,怎麼統一管理諸多的子模組,也是一個頭痛的問題。別擔心,早就有相關的工具在生態系上了,我們只要知道怎麼使用就好了。

  • yarn workspace
  • lerna.js

下一篇,我們將參考 Open Source 專案來慢慢探討這些事。


上一篇
Day14 - 打照自己的模組注意事項
下一篇
Day16 - 管理原始碼的解決方案 Monorepo 和 Polyrepo
系列文
模組化設計30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言